#include<iostream>
#include<cassert>
#include<pthread.h>
#include<unistd.h>
#include<cstdio>
#include<string>


using namespace std;


//线程一旦被创建几乎所有的资源都是被所有线程共享的
int g_val = 0;
std::string func()
{
    return "我是一个独立的方法";
}


//新线程
void* thread_routine(void* args)
{
    const char* name = (const char*)args;
    while(true)
    {
        func();
        cout<<"我是新线程, 我正在运行! name: "<<name<<": "<<func()<<": "<<g_val++<<"&g_val : "<<&g_val<<endl;
        sleep(1);
    }
}
//运行后ps ajx | grep mythread显示进程还是只有一个
//使用ps -aL查看(L就是查看轻量级进程的选项)
void test()
{
    pthread_t tid;
    int n = pthread_create(&tid,nullptr,thread_routine,(void*)"thread one");
    assert(0 == n);
    (void)n;
    //主线程
    while(true)
    {
        // char buffer[64];
        // snprintf(buffer,sizeof(buffer),"0x%x",tid);
        // cout<<"我是主线程, 我正在运行!, 我创建出来的线程tid: "<<buffer<<endl;
        cout<<"我是主线程, 我正在运行!, 我创建出来的线程tid: "<<tid<<": "<<func()<<": "<<g_val<<"&g_val : "<<&g_val<<endl;
        sleep(1);
    }
}
int main()
{
    test();
    return 0;
}